<<<<<<< HEAD
#ifndef USER_H
#define USER_H
#include "functions.h"
#include <string>
using namespace std;
class user {//用户类，每个用户保存自己的任务，id，code
    //每个用户类中的任务分别保存在数据成员usertask和对应文件filename中
public:
    string filename;
    vector<Task> usertask;
public:
    string user_id;
    vector<int> code;
    user() :user_id("default"), code(0), filename("NULL") {};
    user(const string& id, const string& cod, const string& file_name) :user_id(id),filename(file_name)
    {
        code = get_hashcode(cod);
    };
    user(user& tem) :filename(tem.filename), code(tem.code), user_id(tem.user_id) {};
    void get_message() {
        cout << "please input id and code" << endl;
        string tem_user_id, tem_code;
        cin >> tem_user_id >> tem_code;
        user_id = tem_user_id;
        code = get_hashcode(tem_code);
    }
    static vector<int> get_hashcode(string tem_code) {//将输入的密码转化为哈希值，不可逆
        vector<int> hashcode(5);
        vector<int> all_int(0); vector <char> all_char(0);
        for (int i = 0; i < tem_code.size(); i++) {
            if (tem_code[i] <= 57 && tem_code[i] >= 48) all_int.push_back(tem_code[i] - 48);
            else all_char.push_back(tem_code[i]);
        }
        hashcode[0] = all_int.size() % 10;
        hashcode[1] = all_char.size() % 10;
        hashcode[2] = all_int.front();
        hashcode[3] = all_int.back();
        hashcode[4] = all_char.front() % 10;
        hashcode[5] = all_char.back() % 10;
        return hashcode;
    }
    /*获得的哈希值为六位
        第一位 原字符串中的数字个数（ > 9取个位数，下同)
        第二位 原字符串中的字符个数
        第三位 原字符串中数字的第一位
        第四位 原字符串中数字最后一位
        第五位 原字符串中字符第一位（ascii码取个位数）
        第六位 原字符串中字符最后一位
        */
};
vector<user> loaduser();
int find_user(string id,string code);
void loadTasks(user &User);//调用结构体中的loadFromFile()函数；
void addTask(const Task& task,user &User);
void showPrioritytasks(user& User);
void showDaytasks(user& User,int year,int month,int day);
void showMonthtasks(user& User,int year,int month);
void deleteTask(int id,user &User);
void deleteTask(string targetName,user &User);//重载，两种输入均可接受；
void showTasks(user &User,showType type);//要实现不同等级任务输出颜色不同、输出对齐的任务；
void get_user_message();
#endif
=======
#ifndef USER_H
#define USER_H
#include "functions.h"
class user {//用户类，每个用户保存自己的任务，id，code
    //每个用户类中的任务分别保存在数据成员usertask和对应文件filename中
public:
    string filename;
    vector<Task> usertask;
public:
    string user_id;
    vector<int> code;
    user() :user_id("default"), code(0), filename("NULL") {};
    user(const string& id, const string& cod, const string& file_name) :user_id(id),filename(file_name) 
    {
        code = get_hashcode(cod);
        };
    user(user& tem) :filename(tem.filename), code(tem.code), user_id(tem.user_id) {};
    void get_message() {
        cout << "please input id and code" << endl;
        string tem_user_id, tem_code;
        cin >> tem_user_id >> tem_code;
        user_id = tem_user_id;
        code = get_hashcode(tem_code);
    }
    static vector<int> get_hashcode(string tem_code) {//将输入的密码转化为哈希值，不可逆
        vector<int> hashcode(5);
        vector<int> all_int(0); vector <char> all_char(0);
        for (int i = 0; i < tem_code.size(); i++) {
            if (tem_code[i] <= 57 && tem_code[i] >= 48) all_int.push_back(tem_code[i] - 48);
            else all_char.push_back(tem_code[i]);
        }
        hashcode[0] = all_int.size() % 10;
        hashcode[1] = all_char.size() % 10;
        hashcode[2] = all_int.front();
        hashcode[3] = all_int.back();
        hashcode[4] = all_char.front() % 10;
        hashcode[5] = all_char.back() % 10;
        return hashcode;
    }
    /*获得的哈希值为六位
        第一位 原字符串中的数字个数（ > 9取个位数，下同)
        第二位 原字符串中的字符个数
        第三位 原字符串中数字的第一位
        第四位 原字符串中数字最后一位
        第五位 原字符串中字符第一位（ascii码取个位数）
        第六位 原字符串中字符最后一位
        */
        };

void loadTasks(user &User);//调用结构体中的loadFromFile()函数；
void addTask(const Task& task,user &User);
void showPrioritytasks(user& User);
void showDaytasks(user& User,int year,int month,int day);
void showMonthtasks(user& User,int year,int month);
void deleteTask(int id,user &User);
void deleteTask(string targetName,user &User);//重载，两种输入均可接受；
void showTasks(user &User,showType type);//要实现不同等级任务输出颜色不同、输出对齐的任务；
int find_user(string id);
void get_user_message();
#endif
>>>>>>> fc25350d42a2f4fb928ad55076097ca0dad100eb
